package com.stox.client.ui.javafx.screener.widget;

import java.util.Collections;
import java.util.List;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import com.stox.client.ui.javafx.widget.AbstractHasScripTableView;
import com.stox.client.ui.javafx.widget.auto.PropertyDescriptorTableColumn;
import com.stox.shared.beans.BeanDescriptor;
import com.stox.shared.beans.PropertyDescriptor;
import com.stox.shared.beans.PropertyDescriptorIndexComparator;
import com.stox.shared.model.ScreenBeanDescriptor;
import com.stox.shared.model.ScripWrapper;

public class ScripWrapperTableView extends AbstractHasScripTableView<ScripWrapper> {

	private final ObservableList<BeanDescriptor> beanDescriptors = FXCollections.observableArrayList();
	
	public ScripWrapperTableView(ScreenBeanDescriptor screenBeanDescriptor) {
		super(ScripWrapper.class);
		
		List<PropertyDescriptor> propertyDescriptors = screenBeanDescriptor.getScreenMatchBeanDescriptor().getPropertyDescriptors();
		Collections.sort(propertyDescriptors, PropertyDescriptorIndexComparator.getInstance());
		int size = propertyDescriptors.size();
		for(int index = 0; index < size; index++){
			PropertyDescriptor propertyDescriptor = propertyDescriptors.get(index);
			if(!propertyDescriptor.isHidden()){
				getColumns().add(new PropertyDescriptorTableColumn<ScripWrapper>(
						propertyDescriptor.getDisplayName(),
						index, beanDescriptors));
			}
		}
		
	}
	
	public ObservableList<BeanDescriptor> getBeanDescriptors() {
		return beanDescriptors;
	}
}
